Script pour CO Fantasy sous Roll20 5260
Forums > Jeux de rôle > JdR Black Book > Chroniques Oubliées
Hello,
J'ai une erreur avec le script je souhaite utiliser le sort foudre de facon un peu differente j'ai donc creer l'attaque suivante :
#Attaque Foudre --toucher [[@{selected|ATKMAG}]] --dm ?{Nombre de personne 1, 5d10,| 2, 4d8,| 3, 3d6, | 4, 2d4, | 5, 1d2} --portee 40 --sortilege --psave DEX [[12+@{selected|DEX}]] --ligne --fx beam-holy
Le soucis c'est que j'ai une erreur (et cela meme avec l'attaque foudre proposé dans la documentation
TypeError: attr.get is not a function
at apiscript.js:25267:44
at Array.forEach ()
at apiscript.js:25266:25
at Array.filter ()
at enleveDoublonsPartagePV (apiscript.js:25220:21)
at attack (apiscript.js:25994:14)
at parseAttack (apiscript.js:21188:5)
at Object.apiCommand (apiscript.js:55018:9)
at apiscript.js:61032:17
at eval (eval at (/home/node/d20-api-server/api.js:168:1), :65:16)
Quelqu'un à déja eu un soucis similaire sur les attaque --ligne ?
J'ai peut etre mal implémenté la compétence
- Ulti
Salut Dagga. Que tu aies compris ou pas, le script ne devrait jamais planter.
Je n'ai pas réussi à reproduire ce crash, mais grâce à ton message détaillé, j'ai repéré un endroit qui pouvait peut-être poser problème. Tu veux bien ré-essayer avec la dernière version du script depuis le git ?
- Dagga
Hello Ulti,
Ca à l'air d'avoir corriger le soucis, l'attaque a bien fonctionner sur les 3 joueurs en ligne, Merci à toi
Hello Ulti,
J'espère que tu vas bien. Si possible, j'aimerai inclure une option de bonus/malus lors d'un test de compétence. Si possible en one-shot, c'est à dire que le bonus/malus en question ne s'appliquerait que pour UN test et se réinitiiserait avec une valeur par défaut de zero avant tout autres tests de compétence.
Avec les commandes : !cof-set-attribute modificateurTests ?{bonus} et !cof-jet, tu t'y prendrais comment ?
- Ulti
Si c'est juste un bonus à donner , tu peux utiliser !cof-jet --bonus ?{bonus}.
Si tu veux un effet du genre fortifiant (de la Voie des élixirs), c'est un peu plus délicat. Le bonus de +3 est codé en dur pour le fortifiant. Si tu as vraiment besoin de ça, alors il faudrait que je te code quelque chose.
Bonjour petite idée au passe, rien d'obligatoire.
sur !cof-jets est ce que l'on pourrait avoir une option --success ( un peu comme message) pour personnalisé les resultats
exemple
!cof-jet DEX ?{Taille de l'adversaire ? |petit,5|normal,10|grand,15|tres grand,20|geant,25} --nom accrobatie --success Vous sautez par dessus votre adversaire
voilà, si c'est pas possible pas grave
bonnes vacances à tous
davy
- Ulti
Merci ça marche super bien !!
Hop, j'arrive avec une proposition d'ajout pour préciser sur le souffle de la voie des créature élémentaires : utiliser "--cone 30" (en réalité l'angle serait de 28,9° mais bref) avec en portée : 10 pour créature grande, 20 pour énorme, 30 pour colossale.
- Ulti
Merci Kyr. Je vais ajouter ça à la documentation.
Pour la vitalité épique, c'est discutable. C'est bien les "effets de soins" , même si plus loin c'est indiqué "obtient le maximum au dé (6 PV) pour chaque heure de repos.", donc il y a un impact sur la récupération naturelle, même si je vois pas ce que l'heure vient faire ici, pour moi c'est 5 min ou 8h...
Pour le médaillon, c'est "il double son rythme de guérison naturel", donc cela diffère de la capacité épique. On ne parle pas des soins pour le coup.
Dans le cas d'un repos "réparateur", on parle de récupération, pas de soins... donc je ne sais pas comment l'interpréter.
Du coup, on relisant les deux descriptions (de la vitalité épique et du médaillon), ce n'est pas vraiment la même chose. pour le moment j'avais adapté ton script avec la prise en charge d'un prédicat guerisonDouble et adapté la fonction recuperation avec :
if(predicateAsBool(perso, 'guerisonDouble'))
total = total *2 ;
if(predicateAsBool(perso, 'guerisonDouble'))
message += "récupère (" + buildinline(roll) + "+" + bonus + ")x2 PV. "
else
message += "récupère " + buildinline(roll) + "+" + bonus + " PV. "
Donc en bref, fait peut être comme si je n'avais rien dit
Salut Ulti, pour une fois, ma question n'ai pas un appel à l'aide mais une... question. BBE publie chaque jour actuellement une petite brève pour présenter les règles de la v2 à paraître. Comment vois-tu les choses côté script ?
- Ulti
Salut Laurent. Pour l'instant, je n'en sais pas assez. Si les capacités et les règles sont suffisament différentes, et que j'en ai le courage, peut-être que je ferai un script à part (sans partir de zéro, bien sûr). Mais pas sûr que je le fasse si BBE fait un truc vraiment très bien pour Foundry...
Salut Ulti.
Gros problème sur ma dernière partie. Le script plantait à chaque action. Pour l'anecdote, on a fait un gros combat "à la main", chose qui n'était encore jamais arrivée. Au niveau 12... Quand on s'est toujours reposé sur le script, ça pique un peu
Dans le doute, je viens de mettre à jour le script, et fait quelques tests : même problème. Le message d'erreur varie en fonction de l'action / du personnage utilisé ( PJ comme PNJ ). A noter que le début de session s'est très bien passé : le bug est apparu d'un coup ( il me semble que c'était après la 1er utilisation de la fameuse Pluie de flèches, mais que j'avais testé en amont sans que celà ne provoque quoi que ce soit ).
Voici 3 exemples de message d'erreur :
For reference, the error message generated was: TypeError: perso.token.get is not a function
TypeError: perso.token.get is not a function
at sendPerso (apiscript.js:2505:36)
at apiscript.js:20508:9
at Array.forEach ()
at sendDisplay (apiscript.js:20507:29)
at finaliseDisplay (apiscript.js:20780:5)
at finCibles (apiscript.js:19072:9)
at afterSaves (apiscript.js:19905:17)
at etatsAvecSave (apiscript.js:20200:22)
at effetsAvecSave (apiscript.js:20306:22)
at effetPietinement (apiscript.js:20346:22)
For reference, the error message generated was: TypeError: perso.token.get is not a function
TypeError: perso.token.get is not a function
at sendPerso (apiscript.js:2505:36)
at apiscript.js:20508:9
at Array.forEach ()
at sendDisplay (apiscript.js:20507:29)
at finaliseDisplay (apiscript.js:20780:5)
at finCibles (apiscript.js:19072:9)
at apiscript.js:20140:21
at postBarUpdateForDealDamage (apiscript.js:22672:5)
at apiscript.js:22645:9
at partialSave (apiscript.js:21193:7)
For reference, the error message generated was: TypeError: perso.token.get is not a function
TypeError: perso.token.get is not a function
at sendPerso (apiscript.js:2505:36)
at apiscript.js:20508:9
at Array.forEach ()
at sendDisplay (apiscript.js:20507:29)
at finaliseDisplay (apiscript.js:20780:5)
at attaqueNeTouchePas (apiscript.js:18663:5)
at apiscript.js:18802:9
at callIfAllDone (apiscript.js:11108:30)
at evalITE (apiscript.js:11116:7)
at attackDealDmg (apiscript.js:18767:7)
- Ulti
- et
- Ulti
J'ai l'impression que d'une façon ou d'une autre, l'état du script a été corrompu. J'ai un peu modifié le script pour qu'il efface les données qu'il va utiliser depuis l'état du script avant de les utiliser, de façons à ne pas garder un état corrompu si le script plante. J'espère que ça va au moins débloquer ton problème. Normalement, après mise à jour, le script va encore crasher une fois, puis ça devrait revenir à la normale. Et si tu réussis à reproduire le crash après ça, je veux bien que tu me donnes plus de détails, parce que là je ne vois pas comment le crash a pu se produire pour la première fois.
Ahaha les gros combats à faire à la mano alors qu'on se repose sur le script (en particulier les joueureuses qui sont pas forcément habitué·es des jdr papier)... Ca me rappelle le plantage qu'on avait eu sur l'armée des morts du nécro et/ou les charge héroiques du chevalier à l'époque où je savais pas m'en servir. La panique à bord mais au final c'était bien marrant ^^'
Effectivement, l'état global était corrompu sur cette partie, sans que je puisse dire pourquoi. Et il semble que le crash arrivait avant que l'état soit mis à jour dans leur base de donnée. Donc, si jamais cela se reproduit pour l'un d'entre vous, j'ai implémenté une fonction !cof-clean-global-state qui devrait permettre de régler le problème.